-
Notifications
You must be signed in to change notification settings - Fork 39
feat(react): add FeatureFlag component #1164
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
b22a3e3
to
e6614c0
Compare
/** | ||
* The key of the feature flag to evaluate. | ||
*/ | ||
featureKey: string; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this should be called key
... or possibly flagKey
, but I think that's redundant given the name of the component.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
key
is reserved in React: https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key
Keys tell React which array item each component corresponds to, so that it can match them up later. This becomes important if your array items can move (e.g. due to sorting), get inserted, or get deleted. A well-chosen key helps React infer what exactly has happened, and make the correct updates to the DOM tree.
so I would vote for flagKey
featureKey: string; | ||
|
||
/** | ||
* Optional value to match against the feature flag value. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please specify here exactly what comparison is used\ (==
vs ===
, etc).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if we do the default mentioned below, we can just describe it as By default, strict equality is used
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added in the jsdoc comment
* If a boolean, it will check if the flag is enabled (true) or disabled (false). | ||
* If a string, it will check if the flag variant equals this string. | ||
*/ | ||
match?: string | boolean; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be really cool to add support for a predicate function that accepts the EvaluationDetails
so people can specify exactly how to match.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be really cool to add support for a predicate function that accepts the EvaluationDetails so people can specify exactly how to match.
+1
Also with this, you could make this function work for all the types.
And it could have a default that would be
function equals<T>(expected: T, actual: EvaluationDetails<T>){
return expected === actual.value
}
And for objects we could actually make this required if we wanted as this default does not make much sense here.
What do you think @weyert @toddbaert?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually ya, I think that's a great idea.
* Default value to use when the feature flag is not found. | ||
*/ | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
defaultValue: any; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can use the FlagValue
type available from the SDK.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With the predicate from above this could be generic.
The whole component would become nicely typed then as the same type param can be used for the predicate then, so it will always fit the default value.
* Can be a React node or a function that receives flag query details and returns a React node. | ||
*/ | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
children: React.ReactNode | ((details: FlagQuery<any>) => React.ReactNode); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as https://github.com/open-feature/js-sdk/pull/1164/files#r2036811527 I think.
/** | ||
* Optional content to render when the feature flag condition is not met. | ||
*/ | ||
fallback?: React.ReactNode; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think if we are going to only have one alternative child (fallback) we definitely need to do this, so that users can have control over to render this in very specific situations (evaluation errors, reasons, etc).
The alternative (which I don't like as muich) would be to also specify error
components, etc... but I think that isn't as good.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The alternative (which I don't like as muich) would be to also specify error components, etc... but I think that isn't as good.
I think for it feels a little more idiomatic to have the matcher that is also able to match for error, as you said @toddbaert.
But both could work for me.
/** | ||
* If true, inverts the condition logic (renders children when condition is NOT met). | ||
*/ | ||
negate?: boolean; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if this is needed if we do this: https://github.com/open-feature/js-sdk/pull/1164/files#r2036805701 I would recommend getting rid of this, then users can white their own invert.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is really cool. I really like the idea and the concepts. I've made a few minor proposals that I think simply the API but also make it slightly more flexible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a good idea!
Left some thought before approving :)
/** | ||
* The key of the feature flag to evaluate. | ||
*/ | ||
featureKey: string; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
key
is reserved in React: https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key
Keys tell React which array item each component corresponds to, so that it can match them up later. This becomes important if your array items can move (e.g. due to sorting), get inserted, or get deleted. A well-chosen key helps React infer what exactly has happened, and make the correct updates to the DOM tree.
so I would vote for flagKey
* If a boolean, it will check if the flag is enabled (true) or disabled (false). | ||
* If a string, it will check if the flag variant equals this string. | ||
*/ | ||
match?: string | boolean; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be really cool to add support for a predicate function that accepts the EvaluationDetails so people can specify exactly how to match.
+1
Also with this, you could make this function work for all the types.
And it could have a default that would be
function equals<T>(expected: T, actual: EvaluationDetails<T>){
return expected === actual.value
}
And for objects we could actually make this required if we wanted as this default does not make much sense here.
What do you think @weyert @toddbaert?
* Default value to use when the feature flag is not found. | ||
*/ | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
defaultValue: any; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With the predicate from above this could be generic.
The whole component would become nicely typed then as the same type param can be used for the predicate then, so it will always fit the default value.
/** | ||
* Optional content to render when the feature flag condition is not met. | ||
*/ | ||
fallback?: React.ReactNode; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The alternative (which I don't like as muich) would be to also specify error components, etc... but I think that isn't as good.
I think for it feels a little more idiomatic to have the matcher that is also able to match for error, as you said @toddbaert.
But both could work for me.
/** | ||
* If true, inverts the condition logic (renders children when condition is NOT met). | ||
*/ | ||
negate?: boolean; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1
featureKey: string; | ||
|
||
/** | ||
* Optional value to match against the feature flag value. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if we do the default mentioned below, we can just describe it as By default, strict equality is used
Hey @weyert, could you please respond to the feedback when you have a moment? It looks like this change is almost ready and it would be great to get it out soon. |
Totally forgot about this PR. Having a look the coming days |
Introduces the FeatureFlag component for React that allow using feature flags in a declarative manner Signed-off-by: Weyert de Boer <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
## This PR - adds an internal `use` polyfill - refactors suspense support to maintain state across rerenders ### Notes Previously, the Next.JS build process would timeout when using a suspense flag hook. The reason for this is because the noop provider (which is used during a build) is never ready. That meant that the promise thrown to initiate suspense never resolved. To address this, I've added global state using a weak map that's keyed off a provider. A `useRef` won't help because the value is only retained if the component renders successfully. > [!NOTE] > This unblocks suspense in our demo app but does not mean NextJS is officially support (yet). ### How to test I've added some tests and manually tested in the Toggle Shop. --------- Signed-off-by: Michael Beemer <[email protected]> Co-authored-by: Todd Baert <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
Fixes issue where nest test suite was running using dist not source of server sdk. Signed-off-by: Todd Baert <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
🤖 I have created a release *beep* *boop* --- ## [1.8.0](core-v1.7.2...core-v1.8.0) (2025-04-10) ### ✨ New Features * add support for abort controllers to event handlers ([#1151](#1151)) ([6a22483](6a22483)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Signed-off-by: OpenFeature Bot <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
Signed-off-by: Lukas Reining <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
🤖 I have created a release *beep* *boop* --- ## [0.0.11](angular-sdk-v0.0.10...angular-sdk-v0.0.11) (2025-04-11) ### ✨ New Features * **angular:** add option for initial context injection ([aafdb43](aafdb43)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Signed-off-by: OpenFeature Bot <[email protected]> Signed-off-by: Lukas Reining <[email protected]> Co-authored-by: Lukas Reining <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@angular-eslint/builder](https://redirect.github.com/angular-eslint/angular-eslint) ([source](https://redirect.github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder)) | [`18.4.3` -> `19.3.0`](https://renovatebot.com/diffs/npm/@angular-eslint%2fbuilder/18.4.3/19.3.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@angular-eslint/eslint-plugin](https://redirect.github.com/angular-eslint/angular-eslint) ([source](https://redirect.github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin)) | [`18.4.3` -> `19.3.0`](https://renovatebot.com/diffs/npm/@angular-eslint%2feslint-plugin/18.4.3/19.3.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@angular-eslint/eslint-plugin-template](https://redirect.github.com/angular-eslint/angular-eslint) ([source](https://redirect.github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template)) | [`18.4.3` -> `19.3.0`](https://renovatebot.com/diffs/npm/@angular-eslint%2feslint-plugin-template/18.4.3/19.3.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@angular-eslint/schematics](https://redirect.github.com/angular-eslint/angular-eslint) ([source](https://redirect.github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics)) | [`18.4.3` -> `19.3.0`](https://renovatebot.com/diffs/npm/@angular-eslint%2fschematics/18.4.3/19.3.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@angular-eslint/template-parser](https://redirect.github.com/angular-eslint/angular-eslint) ([source](https://redirect.github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser)) | [`18.4.3` -> `19.3.0`](https://renovatebot.com/diffs/npm/@angular-eslint%2ftemplate-parser/18.4.3/19.3.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>angular-eslint/angular-eslint (@​angular-eslint/builder)</summary> ### [`v19.3.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/builder/CHANGELOG.md#1930-2025-03-22) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.2.1...v19.3.0) This was a version bump only for builder to align it with other projects, there were no code changes. ### [`v19.2.1`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/builder/CHANGELOG.md#1921-2025-03-08) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.2.0...v19.2.1) This was a version bump only for builder to align it with other projects, there were no code changes. ### [`v19.2.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/builder/CHANGELOG.md#1920-2025-03-02) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.1.0...v19.2.0) ##### 🩹 Fixes - **eslint-plugin-template:** find inline templates on components in blocks ([#​2238](https://redirect.github.com/angular-eslint/angular-eslint/pull/2238)) ##### ❤️ Thank You - Dave [@​reduckted](https://redirect.github.com/reduckted) ### [`v19.1.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/builder/CHANGELOG.md#1910-2025-02-09) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.2...v19.1.0) This was a version bump only for builder to align it with other projects, there were no code changes. ### [`v19.0.2`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/builder/CHANGELOG.md#1902-2024-12-10) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.1...v19.0.2) This was a version bump only for builder to align it with other projects, there were no code changes. ### [`v19.0.1`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/builder/CHANGELOG.md#1901-2024-12-06) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.0...v19.0.1) This was a version bump only for builder to align it with other projects, there were no code changes. ### [`v19.0.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/builder/CHANGELOG.md#1900-2024-11-29) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v18.4.3...v19.0.0) ##### 🚀 Features - update angular packages to the stable v19 ([#​2120](https://redirect.github.com/angular-eslint/angular-eslint/pull/2120)) ##### ❤️ Thank You - Leosvel Pérez Espinosa [@​leosvelperez](https://redirect.github.com/leosvelperez) #### 18.4.3 (2024-11-29) ##### 🩹 Fixes - yarn pnp issues ([#​2143](https://redirect.github.com/angular-eslint/angular-eslint/pull/2143)) ##### ❤️ Thank You - James Henry [@​JamesHenry](https://redirect.github.com/JamesHenry) #### 18.4.2 (2024-11-23) This was a version bump only for builder to align it with other projects, there were no code changes. #### 18.4.1 (2024-11-18) This was a version bump only for builder to align it with other projects, there were no code changes. #### 18.4.0 (2024-10-21) ##### 🚀 Features - support ESM configs and .cjs and .mjs extensions ([#​2068](https://redirect.github.com/angular-eslint/angular-eslint/pull/2068)) ##### 🩹 Fixes - update dependency eslint to v9.13.0, support noConfigLookup ([#​2045](https://redirect.github.com/angular-eslint/angular-eslint/pull/2045)) ##### ❤️ Thank You - James Henry [@​JamesHenry](https://redirect.github.com/JamesHenry) #### 18.3.1 (2024-09-11) This was a version bump only for builder to align it with other projects, there were no code changes. #### 18.3.0 (2024-08-13) ##### 🩹 Fixes - ensure consistent nx dependency versions ##### ❤️ Thank You - James Henry #### 18.2.0 (2024-07-31) This was a version bump only for builder to align it with other projects, there were no code changes. #### 18.1.0 (2024-07-01) This was a version bump only for builder to align it with other projects, there were no code changes. #### 18.0.1 (2024-05-30) ##### 🩹 Fixes - move typescript-eslint packages to peerDeps, consistently allow v7 and v8 ##### ❤️ Thank You - James Henry </details> <details> <summary>angular-eslint/angular-eslint (@​angular-eslint/eslint-plugin)</summary> ### [`v19.3.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#1930-2025-03-22) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.2.1...v19.3.0) This was a version bump only for eslint-plugin to align it with other projects, there were no code changes. ### [`v19.2.1`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#1921-2025-03-08) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.2.0...v19.2.1) This was a version bump only for eslint-plugin to align it with other projects, there were no code changes. ### [`v19.2.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#1920-2025-03-02) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.1.0...v19.2.0) ##### 🚀 Features - **eslint-plugin:** add rule require-lifecycle-on-prototype ([#​2259](https://redirect.github.com/angular-eslint/angular-eslint/pull/2259)) ##### 🩹 Fixes - **eslint-plugin-template:** find inline templates on components in blocks ([#​2238](https://redirect.github.com/angular-eslint/angular-eslint/pull/2238)) ##### ❤️ Thank You - Dave [@​reduckted](https://redirect.github.com/reduckted) ### [`v19.1.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#1910-2025-02-09) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.2...v19.1.0) ##### 🚀 Features - **eslint-plugin:** prefer-signals now checks .asReadonly() calls ([#​2218](https://redirect.github.com/angular-eslint/angular-eslint/pull/2218)) - **eslint-plugin:** prefer-signals read-only suggestion is now a fix ([#​2175](https://redirect.github.com/angular-eslint/angular-eslint/pull/2175)) ##### 🩹 Fixes - **eslint-plugin:** \[no-input-prefix] false positive on input initializer value ([#​2184](https://redirect.github.com/angular-eslint/angular-eslint/pull/2184)) - **eslint-plugin:** \[prefer-signals] support linkedSignal ([#​2213](https://redirect.github.com/angular-eslint/angular-eslint/pull/2213)) ##### ❤️ Thank You - Cédric Exbrayat [@​cexbrayat](https://redirect.github.com/cexbrayat) - Dave [@​reduckted](https://redirect.github.com/reduckted) - Lucas Neto Moreira ### [`v19.0.2`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#1902-2024-12-10) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.1...v19.0.2) ##### 🩹 Fixes - **eslint-plugin:** \[prefer-standalone] error range should only include property and value ([#​2172](https://redirect.github.com/angular-eslint/angular-eslint/pull/2172)) ##### ❤️ Thank You - James Henry [@​JamesHenry](https://redirect.github.com/JamesHenry) ### [`v19.0.1`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#1901-2024-12-06) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.0...v19.0.1) ##### 🩹 Fixes - **eslint-plugin:** adding prefer-signals rule to exported config ([#​2150](https://redirect.github.com/angular-eslint/angular-eslint/pull/2150)) ##### ❤️ Thank You - Quentin Deroubaix [@​quentinderoubaix](https://redirect.github.com/quentinderoubaix) ### [`v19.0.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#1900-2024-11-29) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v18.4.3...v19.0.0) ##### 🚀 Features -⚠️ **eslint-plugin:** promote prefer-standalone to recommended ([8dfdc4f4](https://redirect.github.com/angular-eslint/angular-eslint/commit/8dfdc4f4)) - **eslint-plugin:** new rule prefer-signals ([#​1872](https://redirect.github.com/angular-eslint/angular-eslint/pull/1872)) -⚠️ **eslint-plugin:** remove deprecated no-host-metadata-property rule ([#​2113](https://redirect.github.com/angular-eslint/angular-eslint/pull/2113)) -⚠️ **eslint-plugin:** remove deprecated sort-ngmodule-metadata-arrays rule ([#​2114](https://redirect.github.com/angular-eslint/angular-eslint/pull/2114)) -⚠️ **eslint-plugin:** prefer-standalone recognizes that standalone is the default ([#​2096](https://redirect.github.com/angular-eslint/angular-eslint/pull/2096)) -⚠️ **eslint-plugin:** remove deprecated prefer-standalone-component rule ([#​2112](https://redirect.github.com/angular-eslint/angular-eslint/pull/2112)) #####⚠️ Breaking Changes -⚠️ **eslint-plugin:** promote prefer-standalone to recommended ([8dfdc4f4](https://redirect.github.com/angular-eslint/angular-eslint/commit/8dfdc4f4)) -⚠️ **eslint-plugin:** remove deprecated no-host-metadata-property rule ([#​2113](https://redirect.github.com/angular-eslint/angular-eslint/pull/2113)) -⚠️ **eslint-plugin:** remove deprecated sort-ngmodule-metadata-arrays rule ([#​2114](https://redirect.github.com/angular-eslint/angular-eslint/pull/2114)) -⚠️ **eslint-plugin:** prefer-standalone recognizes that standalone is the default ([#​2096](https://redirect.github.com/angular-eslint/angular-eslint/pull/2096)) -⚠️ **eslint-plugin:** remove deprecated prefer-standalone-component rule ([#​2112](https://redirect.github.com/angular-eslint/angular-eslint/pull/2112)) ##### ❤️ Thank You - Daniel Kimmich [@​json-derulo](https://redirect.github.com/json-derulo) - Dave [@​reduckted](https://redirect.github.com/reduckted) - James Henry [@​JamesHenry](https://redirect.github.com/JamesHenry) - JamesHenry [@​JamesHenry](https://redirect.github.com/JamesHenry) #### 18.4.3 (2024-11-29) This was a version bump only for eslint-plugin to align it with other projects, there were no code changes. #### 18.4.2 (2024-11-23) ##### 🩹 Fixes - **eslint-plugin:** fix placement of lifecycle interface for subclasses ([#​1965](https://redirect.github.com/angular-eslint/angular-eslint/pull/1965)) - **eslint-plugin:** handle `output()` and `input()` functions in various rules ([#​2098](https://redirect.github.com/angular-eslint/angular-eslint/pull/2098)) ##### ❤️ Thank You - Aleksandr Martirosyan - Dave [@​reduckted](https://redirect.github.com/reduckted) #### 18.4.1 (2024-11-18) This was a version bump only for eslint-plugin to align it with other projects, there were no code changes. #### 18.4.0 (2024-10-21) This was a version bump only for eslint-plugin to align it with other projects, there were no code changes. #### 18.3.1 (2024-09-11) This was a version bump only for eslint-plugin to align it with other projects, there were no code changes. #### 18.3.0 (2024-08-13) ##### 🚀 Features - **eslint-plugin:** new rule runtime-localize ##### ❤️ Thank You - m-akinc #### 18.2.0 (2024-07-31) ##### 🚀 Features - update typescript-eslint to v8 stable, eslint v9.8.0 ##### 🩹 Fixes - **eslint-plugin:** \[prefer-standalone] ignore empty Directive decorators ##### ❤️ Thank You - James Henry - Paweł Maniecki #### 18.1.0 (2024-07-01) ##### 🚀 Features - **eslint-plugin:** \[prefer-output-readonly] support output() function ##### 🩹 Fixes - update typescript-eslint packages to v8.0.0-alpha.37 ##### ❤️ Thank You - Christian Svensson - Daniel Kimmich - Dave - Martijn van der Meij - Maximilian Main #### 18.0.1 (2024-05-30) ##### 🩹 Fixes - move typescript-eslint packages to peerDeps, consistently allow v7 and v8 ##### ❤️ Thank You - James Henry </details> <details> <summary>angular-eslint/angular-eslint (@​angular-eslint/eslint-plugin-template)</summary> ### [`v19.3.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin-template/CHANGELOG.md#1930-2025-03-22) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.2.1...v19.3.0) ##### 🚀 Features - use [@​angular/compiler](https://redirect.github.com/angular/compiler) 19.2.3 and rename some AST nodes to match ([#​2320](https://redirect.github.com/angular-eslint/angular-eslint/pull/2320)) - **eslint-plugin-template:** add rule prefer-contextual-for-variables ([#​2311](https://redirect.github.com/angular-eslint/angular-eslint/pull/2311)) - **eslint-plugin-template:** \[button-has-type] add option to ignore missing type ([#​2326](https://redirect.github.com/angular-eslint/angular-eslint/pull/2326)) ##### 🩹 Fixes - **eslint-plugin-template:** \[attributes-order] treat inputs without square brackets as attributes ([#​2316](https://redirect.github.com/angular-eslint/angular-eslint/pull/2316)) - **eslint-plugin-template:** \[attributes-order] order i18n attributes ([#​2307](https://redirect.github.com/angular-eslint/angular-eslint/pull/2307)) - **eslint-plugin-template:** \[i18n] Avoid exception in i18n rule with allowMarkupInContent=false ([#​2327](https://redirect.github.com/angular-eslint/angular-eslint/pull/2327)) ##### ❤️ Thank You - Dave [@​reduckted](https://redirect.github.com/reduckted) - m-akinc [@​m-akinc](https://redirect.github.com/m-akinc) ### [`v19.2.1`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin-template/CHANGELOG.md#1921-2025-03-08) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.2.0...v19.2.1) ##### 🩹 Fixes - **eslint-plugin-template:** \[prefer-self-closing-tags] resolve wrong reports when structural directive + no content + no self-closing ([#​2287](https://redirect.github.com/angular-eslint/angular-eslint/pull/2287)) ##### ❤️ Thank You - Guillaume DROUARD ### [`v19.2.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin-template/CHANGELOG.md#1920-2025-03-02) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.1.0...v19.2.0) ##### 🩹 Fixes - **prefer-static-string-properties:** exclude special attributes ([#​2273](https://redirect.github.com/angular-eslint/angular-eslint/pull/2273)) - **prefer-static-string-properties:** resolve bug with directives ([#​2271](https://redirect.github.com/angular-eslint/angular-eslint/pull/2271)) - **eslint-plugin-template:** find inline templates on components in blocks ([#​2238](https://redirect.github.com/angular-eslint/angular-eslint/pull/2238)) - **eslint-plugin-template:** \[prefer-static-string-properties] do not check structural directives ([#​2253](https://redirect.github.com/angular-eslint/angular-eslint/pull/2253)) - **eslint-plugin-template:** \[prefer-self-closing-tags] allow nested ng-content ([#​2257](https://redirect.github.com/angular-eslint/angular-eslint/pull/2257)) - **eslint-plugin-template:** \[prefer-self-closing-tags] do not treat comments as whitespace ([#​2256](https://redirect.github.com/angular-eslint/angular-eslint/pull/2256)) ##### ❤️ Thank You - Dave [@​reduckted](https://redirect.github.com/reduckted) - Marie Briand [@​mbriand-lucca](https://redirect.github.com/mbriand-lucca) ### [`v19.1.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin-template/CHANGELOG.md#1910-2025-02-09) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.2...v19.1.0) ##### 🚀 Features - **eslint-plugin-template:** add rule prefer-static-string-properties ([#​2228](https://redirect.github.com/angular-eslint/angular-eslint/pull/2228)) ##### 🩹 Fixes - **eslint-plugin-template:** \[attribute-order] check for ng-template within svg ([#​2223](https://redirect.github.com/angular-eslint/angular-eslint/pull/2223)) - **eslint-plugin-template:** \[prefer-self-closing-tags] do not remove HTML-encoded whitespace ([#​2229](https://redirect.github.com/angular-eslint/angular-eslint/pull/2229)) ##### ❤️ Thank You - Dave [@​reduckted](https://redirect.github.com/reduckted) ### [`v19.0.2`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin-template/CHANGELOG.md#1902-2024-12-10) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.1...v19.0.2) This was a version bump only for eslint-plugin-template to align it with other projects, there were no code changes. ### [`v19.0.1`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin-template/CHANGELOG.md#1901-2024-12-06) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.0...v19.0.1) ##### 🩹 Fixes - **eslint-plugin-template:** prevent the slot tag from being self-closing ([#​2088](https://redirect.github.com/angular-eslint/angular-eslint/pull/2088)) ##### ❤️ Thank You - Joan Llenas [@​joanllenas](https://redirect.github.com/joanllenas) ### [`v19.0.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/eslint-plugin-template/CHANGELOG.md#1900-2024-11-29) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v18.4.3...v19.0.0) This was a version bump only for eslint-plugin-template to align it with other projects, there were no code changes. #### 18.4.3 (2024-11-29) This was a version bump only for eslint-plugin-template to align it with other projects, there were no code changes. #### 18.4.2 (2024-11-23) This was a version bump only for eslint-plugin-template to align it with other projects, there were no code changes. #### 18.4.1 (2024-11-18) This was a version bump only for eslint-plugin-template to align it with other projects, there were no code changes. #### 18.4.0 (2024-10-21) ##### 🩹 Fixes - update typescript-eslint packages to v8.10.0 ([#​2046](https://redirect.github.com/angular-eslint/angular-eslint/pull/2046)) - update dependency aria-query to v5.3.2 ([#​2053](https://redirect.github.com/angular-eslint/angular-eslint/pull/2053)) - update dependency aria-query to v5.3.1 ([#​2043](https://redirect.github.com/angular-eslint/angular-eslint/pull/2043)) #### 18.3.1 (2024-09-11) ##### 🩹 Fixes - **template-parser:** visit receiver of Call expression - **template-parser:** visit receiver of Call expression" - **template-parser:** visit receiver of Call expression ##### ❤️ Thank You - James Henry - Paweł Maniecki #### 18.3.0 (2024-08-13) ##### 🩹 Fixes - **eslint-plugin-template:** \[interactive-supports-focus] allowList with form as default option to support event bubbling - **eslint-plugin-template:** \[prefer-self-closing-tags] fix ng-content with rich default content - **prefer-self-closing-tags:** handle both forward and backward slash ##### ❤️ Thank You - Daniel Kimmich - Sandi Barr - Simon #### 18.2.0 (2024-07-31) ##### 🚀 Features - update typescript-eslint to v8 stable, eslint v9.8.0 ##### 🩹 Fixes - update dependency axobject-query to v4.1.0 - **eslint-plugin-template:** add meta to preprocessor to resolve eslint cache error ##### ❤️ Thank You - James Henry - kwiateusz #### 18.1.0 (2024-07-01) ##### 🚀 Features - **eslint-plugin:** \[no-call-expression] add allowPrefix and allowSuffix ##### 🩹 Fixes - update typescript-eslint packages to v8.0.0-alpha.37 - **eslint-plugin-template:** \[prefer-self-closing-tags] always ignore index.html files - **eslint-plugin-template:** \[prefer-self-closing-tags] support ng-content with fallback content ##### ❤️ Thank You - Christian Svensson - Daniel Kimmich - Dave - Martijn van der Meij - Maximilian Main #### 18.0.1 (2024-05-30) ##### 🩹 Fixes - move typescript-eslint packages to peerDeps, consistently allow v7 and v8 ##### ❤️ Thank You - James Henry </details> <details> <summary>angular-eslint/angular-eslint (@​angular-eslint/schematics)</summary> ### [`v19.3.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/schematics/CHANGELOG.md#1930-2025-03-22) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.2.1...v19.3.0) ##### 🩹 Fixes - update dependency eslint to v9.23.0 ([#​2331](https://redirect.github.com/angular-eslint/angular-eslint/pull/2331)) - update typescript-eslint packages to v8.27.0 ([#​2328](https://redirect.github.com/angular-eslint/angular-eslint/pull/2328)) - update typescript-eslint packages to v8.26.1 ([#​2313](https://redirect.github.com/angular-eslint/angular-eslint/pull/2313)) ### [`v19.2.1`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/schematics/CHANGELOG.md#1921-2025-03-08) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.2.0...v19.2.1) ##### 🩹 Fixes - update dependency eslint to v9.22.0 ([#​2294](https://redirect.github.com/angular-eslint/angular-eslint/pull/2294)) - update typescript-eslint packages to v8.26.0 ([#​2282](https://redirect.github.com/angular-eslint/angular-eslint/pull/2282)) ### [`v19.2.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/schematics/CHANGELOG.md#1920-2025-03-02) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.1.0...v19.2.0) ##### 🩹 Fixes - update typescript-eslint packages to v8.25.0 ([#​2263](https://redirect.github.com/angular-eslint/angular-eslint/pull/2263)) - update dependency eslint to v9.21.0 ([#​2243](https://redirect.github.com/angular-eslint/angular-eslint/pull/2243)) - **eslint-plugin-template:** find inline templates on components in blocks ([#​2238](https://redirect.github.com/angular-eslint/angular-eslint/pull/2238)) - update typescript-eslint packages to v8.24.0 ([#​2240](https://redirect.github.com/angular-eslint/angular-eslint/pull/2240)) ##### ❤️ Thank You - Dave [@​reduckted](https://redirect.github.com/reduckted) ### [`v19.1.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/schematics/CHANGELOG.md#1910-2025-02-09) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.2...v19.1.0) ##### 🩹 Fixes - update dependency eslint to v9.20.0 ([#​2217](https://redirect.github.com/angular-eslint/angular-eslint/pull/2217)) - update typescript-eslint packages to v8.23.0 ([#​2212](https://redirect.github.com/angular-eslint/angular-eslint/pull/2212)) - update dependency semver to v7.7.1 ([#​2225](https://redirect.github.com/angular-eslint/angular-eslint/pull/2225)) - update typescript-eslint packages to v8.20.0 ([#​2185](https://redirect.github.com/angular-eslint/angular-eslint/pull/2185)) - update dependency eslint to v9.18.0 ([#​2181](https://redirect.github.com/angular-eslint/angular-eslint/pull/2181)) - update dependency ignore to v7 ([#​2200](https://redirect.github.com/angular-eslint/angular-eslint/pull/2200)) ### [`v19.0.2`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/schematics/CHANGELOG.md#1902-2024-12-10) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.1...v19.0.2) ##### 🩹 Fixes - update typescript-eslint packages to v8.18.0 ([#​2171](https://redirect.github.com/angular-eslint/angular-eslint/pull/2171)) ### [`v19.0.1`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/schematics/CHANGELOG.md#1901-2024-12-06) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.0...v19.0.1) ##### 🩹 Fixes - update typescript-eslint packages to v8.17.0 ([#​2153](https://redirect.github.com/angular-eslint/angular-eslint/pull/2153)) - update dependency eslint to v9.16.0 ([#​2148](https://redirect.github.com/angular-eslint/angular-eslint/pull/2148)) ### [`v19.0.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/schematics/CHANGELOG.md#1900-2024-11-29) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v18.4.3...v19.0.0) ##### 🚀 Features - allow referencing angular-eslint as the schematics collection ([2be3107b](https://redirect.github.com/angular-eslint/angular-eslint/commit/2be3107b)) - update angular packages to the stable v19 ([#​2120](https://redirect.github.com/angular-eslint/angular-eslint/pull/2120)) ##### ❤️ Thank You - JamesHenry [@​JamesHenry](https://redirect.github.com/JamesHenry) - Leosvel Pérez Espinosa [@​leosvelperez](https://redirect.github.com/leosvelperez) #### 18.4.3 (2024-11-29) ##### 🩹 Fixes - update typescript-eslint packages to v8.16.0 ([#​2135](https://redirect.github.com/angular-eslint/angular-eslint/pull/2135)) - yarn pnp issues ([#​2143](https://redirect.github.com/angular-eslint/angular-eslint/pull/2143)) ##### ❤️ Thank You - James Henry [@​JamesHenry](https://redirect.github.com/JamesHenry) #### 18.4.2 (2024-11-23) This was a version bump only for schematics to align it with other projects, there were no code changes. #### 18.4.1 (2024-11-18) ##### 🩹 Fixes - update dependency ignore to v6 ([#​2047](https://redirect.github.com/angular-eslint/angular-eslint/pull/2047)) #### 18.4.0 (2024-10-21) ##### 🚀 Features - support ESM configs and .cjs and .mjs extensions ([#​2068](https://redirect.github.com/angular-eslint/angular-eslint/pull/2068)) ##### 🩹 Fixes - update dependency eslint to v9.13.0, support noConfigLookup ([#​2045](https://redirect.github.com/angular-eslint/angular-eslint/pull/2045)) - update typescript-eslint packages to v8.10.0 ([#​2046](https://redirect.github.com/angular-eslint/angular-eslint/pull/2046)) - update typescript-eslint packages to v8.5.0 ([#​2020](https://redirect.github.com/angular-eslint/angular-eslint/pull/2020)) ##### ❤️ Thank You - James Henry [@​JamesHenry](https://redirect.github.com/JamesHenry) #### 18.3.1 (2024-09-11) ##### 🩹 Fixes - update dependency eslint to v9.9.1 - update typescript-eslint packages to v8.2.0 #### 18.3.0 (2024-08-13) ##### 🩹 Fixes - ensure consistent nx dependency versions - update dependency eslint to v9.9.0 - update dependency ignore to v5.3.2 - update typescript-eslint packages to v8.0.1 - update typescript-eslint packages to v8.1.0 ##### ❤️ Thank You - James Henry #### 18.2.0 (2024-07-31) ##### 🚀 Features - update typescript-eslint to v8 stable, eslint v9.8.0 ##### 🩹 Fixes - update dependency semver to v7.6.3 ##### ❤️ Thank You - James Henry #### 18.1.0 (2024-07-01) ##### 🩹 Fixes - update dependency eslint to v9.4.0 - update dependency eslint to v9.5.0 - update dependency eslint to v9.6.0 - update typescript-eslint packages to v8.0.0-alpha.37 - update typescript-eslint packages to v8.0.0-alpha.38 ##### ❤️ Thank You - Christian Svensson - Daniel Kimmich - Dave - Martijn van der Meij - Maximilian Main #### 18.0.1 (2024-05-30) This was a version bump only for schematics to align it with other projects, there were no code changes. </details> <details> <summary>angular-eslint/angular-eslint (@​angular-eslint/template-parser)</summary> ### [`v19.3.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/template-parser/CHANGELOG.md#1930-2025-03-22) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.2.1...v19.3.0) ##### 🚀 Features - use [@​angular/compiler](https://redirect.github.com/angular/compiler) 19.2.3 and rename some AST nodes to match ([#​2320](https://redirect.github.com/angular-eslint/angular-eslint/pull/2320)) - **template-parser:** visit [@​let](https://redirect.github.com/let) child nodes ([#​2312](https://redirect.github.com/angular-eslint/angular-eslint/pull/2312)) ##### ❤️ Thank You - Dave [@​reduckted](https://redirect.github.com/reduckted) ### [`v19.2.1`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/template-parser/CHANGELOG.md#1921-2025-03-08) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.2.0...v19.2.1) This was a version bump only for template-parser to align it with other projects, there were no code changes. ### [`v19.2.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/template-parser/CHANGELOG.md#1920-2025-03-02) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.1.0...v19.2.0) ##### 🩹 Fixes - **eslint-plugin-template:** find inline templates on components in blocks ([#​2238](https://redirect.github.com/angular-eslint/angular-eslint/pull/2238)) ##### ❤️ Thank You - Dave [@​reduckted](https://redirect.github.com/reduckted) ### [`v19.1.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/template-parser/CHANGELOG.md#1910-2025-02-09) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.2...v19.1.0) This was a version bump only for template-parser to align it with other projects, there were no code changes. ### [`v19.0.2`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/template-parser/CHANGELOG.md#1902-2024-12-10) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.1...v19.0.2) This was a version bump only for template-parser to align it with other projects, there were no code changes. ### [`v19.0.1`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/template-parser/CHANGELOG.md#1901-2024-12-06) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v19.0.0...v19.0.1) This was a version bump only for template-parser to align it with other projects, there were no code changes. ### [`v19.0.0`](https://redirect.github.com/angular-eslint/angular-eslint/blob/HEAD/packages/template-parser/CHANGELOG.md#1900-2024-11-29) [Compare Source](https://redirect.github.com/angular-eslint/angular-eslint/compare/v18.4.3...v19.0.0) This was a version bump only for template-parser to align it with other projects, there were no code changes. #### 18.4.3 (2024-11-29) This was a version bump only for template-parser to align it with other projects, there were no code changes. #### 18.4.2 (2024-11-23) This was a version bump only for template-parser to align it with other projects, there were no code changes. #### 18.4.1 (2024-11-18) This was a version bump only for template-parser to align it with other projects, there were no code changes. #### 18.4.0 (2024-10-21) ##### 🩹 Fixes - **template-parser:** traverse ng-content fallback content ([#​2031](https://redirect.github.com/angular-eslint/angular-eslint/pull/2031)) ##### ❤️ Thank You - Matt Lewis [@​mattlewis92](https://redirect.github.com/mattlewis92) #### 18.3.1 (2024-09-11) ##### 🩹 Fixes - **template-parser:** visit receiver of Call expression - **template-parser:** visit receiver of Call expression" - **template-parser:** visit receiver of Call expression ##### ❤️ Thank You - James Henry - Paweł Maniecki #### 18.3.0 (2024-08-13) This was a version bump only for template-parser to align it with other projects, there were no code changes. #### 18.2.0 (2024-07-31) ##### 🚀 Features - update typescript-eslint to v8 stable, eslint v9.8.0 ##### ❤️ Thank You - James Henry #### 18.1.0 (2024-07-01) This was a version bump only for template-parser to align it with other projects, there were no code changes. #### 18.0.1 (2024-05-30) This was a version bump only for template-parser to align it with other projects, there were no code changes. </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNDUuMCIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [esbuild](https://redirect.github.com/evanw/esbuild) | [`^0.24.0` -> `^0.25.0`](https://renovatebot.com/diffs/npm/esbuild/0.24.2/0.25.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | ### GitHub Vulnerability Alerts #### [GHSA-67mh-4wv8-2f99](https://redirect.github.com/evanw/esbuild/security/advisories/GHSA-67mh-4wv8-2f99) ### Summary esbuild allows any websites to send any request to the development server and read the response due to default CORS settings. ### Details esbuild sets `Access-Control-Allow-Origin: *` header to all requests, including the SSE connection, which allows any websites to send any request to the development server and read the response. https://github.com/evanw/esbuild/blob/df815ac27b84f8b34374c9182a93c94718f8a630/pkg/api/serve_other.go#L121 https://github.com/evanw/esbuild/blob/df815ac27b84f8b34374c9182a93c94718f8a630/pkg/api/serve_other.go#L363 **Attack scenario**: 1. The attacker serves a malicious web page (`http://malicious.example.com`). 1. The user accesses the malicious web page. 1. The attacker sends a `fetch('http://127.0.0.1:8000/main.js')` request by JS in that malicious web page. This request is normally blocked by same-origin policy, but that's not the case for the reasons above. 1. The attacker gets the content of `http://127.0.0.1:8000/main.js`. In this scenario, I assumed that the attacker knows the URL of the bundle output file name. But the attacker can also get that information by - Fetching `/index.html`: normally you have a script tag here - Fetching `/assets`: it's common to have a `assets` directory when you have JS files and CSS files in a different directory and the directory listing feature tells the attacker the list of files - Connecting `/esbuild` SSE endpoint: the SSE endpoint sends the URL path of the changed files when the file is changed (`new EventSource('/esbuild').addEventListener('change', e => console.log(e.type, e.data))`) - Fetching URLs in the known file: once the attacker knows one file, the attacker can know the URLs imported from that file The scenario above fetches the compiled content, but if the victim has the source map option enabled, the attacker can also get the non-compiled content by fetching the source map file. ### PoC 1. Download [reproduction.zip](https://redirect.github.com/user-attachments/files/18561484/reproduction.zip) 2. Extract it and move to that directory 1. Run `npm i` 1. Run `npm run watch` 1. Run `fetch('http://127.0.0.1:8000/app.js').then(r => r.text()).then(content => console.log(content))` in a different website's dev tools.  ### Impact Users using the serve feature may get the source code stolen by malicious websites. --- ### Release Notes <details> <summary>evanw/esbuild (esbuild)</summary> ### [`v0.25.0`](https://redirect.github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#v0250) [Compare Source](https://redirect.github.com/evanw/esbuild/compare/v0.24.2...v0.25.0) **This release deliberately contains backwards-incompatible changes.** To avoid automatically picking up releases like this, you should either be pinning the exact version of `esbuild` in your `package.json` file (recommended) or be using a version range syntax that only accepts patch upgrades such as `^0.24.0` or `~0.24.0`. See npm's documentation about [semver](https://docs.npmjs.com/cli/v6/using-npm/semver/) for more information. - Restrict access to esbuild's development server ([GHSA-67mh-4wv8-2f99](https://redirect.github.com/evanw/esbuild/security/advisories/GHSA-67mh-4wv8-2f99)) This change addresses esbuild's first security vulnerability report. Previously esbuild set the `Access-Control-Allow-Origin` header to `*` to allow esbuild's development server to be flexible in how it's used for development. However, this allows the websites you visit to make HTTP requests to esbuild's local development server, which gives read-only access to your source code if the website were to fetch your source code's specific URL. You can read more information in [the report](https://redirect.github.com/evanw/esbuild/security/advisories/GHSA-67mh-4wv8-2f99). Starting with this release, [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) will now be disabled, and requests will now be denied if the host does not match the one provided to `--serve=`. The default host is `0.0.0.0`, which refers to all of the IP addresses that represent the local machine (e.g. both `127.0.0.1` and `192.168.0.1`). If you want to customize anything about esbuild's development server, you can [put a proxy in front of esbuild](https://esbuild.github.io/api/#serve-proxy) and modify the incoming and/or outgoing requests. In addition, the `serve()` API call has been changed to return an array of `hosts` instead of a single `host` string. This makes it possible to determine all of the hosts that esbuild's development server will accept. Thanks to [@​sapphi-red](https://redirect.github.com/sapphi-red) for reporting this issue. - Delete output files when a build fails in watch mode ([#​3643](https://redirect.github.com/evanw/esbuild/issues/3643)) It has been requested for esbuild to delete files when a build fails in watch mode. Previously esbuild left the old files in place, which could cause people to not immediately realize that the most recent build failed. With this release, esbuild will now delete all output files if a rebuild fails. Fixing the build error and triggering another rebuild will restore all output files again. - Fix correctness issues with the CSS nesting transform ([#​3620](https://redirect.github.com/evanw/esbuild/issues/3620), [#​3877](https://redirect.github.com/evanw/esbuild/issues/3877), [#​3933](https://redirect.github.com/evanw/esbuild/issues/3933), [#​3997](https://redirect.github.com/evanw/esbuild/issues/3997), [#​4005](https://redirect.github.com/evanw/esbuild/issues/4005), [#​4037](https://redirect.github.com/evanw/esbuild/pull/4037), [#​4038](https://redirect.github.com/evanw/esbuild/pull/4038)) This release fixes the following problems: - Naive expansion of CSS nesting can result in an exponential blow-up of generated CSS if each nesting level has multiple selectors. Previously esbuild sometimes collapsed individual nesting levels using `:is()` to limit expansion. However, this collapsing wasn't correct in some cases, so it has been removed to fix correctness issues. ```css /* Original code */ .parent { > .a, > .b1 > .b2 { color: red; } } /* Old output (with --supported:nesting=false) */ .parent > :is(.a, .b1 > .b2) { color: red; } /* New output (with --supported:nesting=false) */ .parent > .a, .parent > .b1 > .b2 { color: red; } ``` Thanks to [@​tim-we](https://redirect.github.com/tim-we) for working on a fix. - The `&` CSS nesting selector can be repeated multiple times to increase CSS specificity. Previously esbuild ignored this possibility and incorrectly considered `&&` to have the same specificity as `&`. With this release, this should now work correctly: ```css /* Original code (color should be red) */ div { && { color: red } & { color: blue } } /* Old output (with --supported:nesting=false) */ div { color: red; } div { color: blue; } /* New output (with --supported:nesting=false) */ div:is(div) { color: red; } div { color: blue; } ``` Thanks to [@​CPunisher](https://redirect.github.com/CPunisher) for working on a fix. - Previously transforming nested CSS incorrectly removed leading combinators from within pseudoclass selectors such as `:where()`. This edge case has been fixed and how has test coverage. ```css /* Original code */ a b:has(> span) { a & { color: green; } } /* Old output (with --supported:nesting=false) */ a :is(a b:has(span)) { color: green; } /* New output (with --supported:nesting=false) */ a :is(a b:has(> span)) { color: green; } ``` This fix was contributed by [@​NoremacNergfol](https://redirect.github.com/NoremacNergfol). - The CSS minifier contains logic to remove the `&` selector when it can be implied, which happens when there is only one and it's the leading token. However, this logic was incorrectly also applied to selector lists inside of pseudo-class selectors such as `:where()`. With this release, the minifier will now avoid applying this logic in this edge case: ```css /* Original code */ .a { & .b { color: red } :where(& .b) { color: blue } } /* Old output (with --minify) */ .a{.b{color:red}:where(.b){color:#​00f}} /* New output (with --minify) */ .a{.b{color:red}:where(& .b){color:#​00f}} ``` - Fix some correctness issues with source maps ([#​1745](https://redirect.github.com/evanw/esbuild/issues/1745), [#​3183](https://redirect.github.com/evanw/esbuild/issues/3183), [#​3613](https://redirect.github.com/evanw/esbuild/issues/3613), [#​3982](https://redirect.github.com/evanw/esbuild/issues/3982)) Previously esbuild incorrectly treated source map path references as file paths instead of as URLs. With this release, esbuild will now treat source map path references as URLs. This fixes the following problems with source maps: - File names in `sourceMappingURL` that contained a space previously did not encode the space as `%20`, which resulted in JavaScript tools (including esbuild) failing to read that path back in when consuming the generated output file. This should now be fixed. - Absolute URLs in `sourceMappingURL` that use the `file://` scheme previously attempted to read from a folder called `file:`. These URLs should now be recognized and parsed correctly. - Entries in the `sources` array in the source map are now treated as URLs instead of file paths. The correct behavior for this is much more clear now that source maps has a [formal specification](https://tc39.es/ecma426/). Many thanks to those who worked on the specification. - Fix incorrect package for `@esbuild/netbsd-arm64` ([#​4018](https://redirect.github.com/evanw/esbuild/issues/4018)) Due to a copy+paste typo, the binary published to `@esbuild/netbsd-arm64` was not actually for `arm64`, and didn't run in that environment. This release should fix running esbuild in that environment (NetBSD on 64-bit ARM). Sorry about the mistake. - Fix a minification bug with bitwise operators and bigints ([#​4065](https://redirect.github.com/evanw/esbuild/issues/4065)) This change removes an incorrect assumption in esbuild that all bitwise operators result in a numeric integer. That assumption was correct up until the introduction of bigints in ES2020, but is no longer correct because almost all bitwise operators now operate on both numbers and bigints. Here's an example of the incorrect minification: ```js // Original code if ((a & b) !== 0) found = true // Old output (with --minify) a&b&&(found=!0); // New output (with --minify) (a&b)!==0&&(found=!0); ``` - Fix esbuild incorrectly rejecting valid TypeScript edge case ([#​4027](https://redirect.github.com/evanw/esbuild/issues/4027)) The following TypeScript code is valid: ```ts export function open(async?: boolean): void { console.log(async as boolean) } ``` Before this version, esbuild would fail to parse this with a syntax error as it expected the token sequence `async as ...` to be the start of an async arrow function expression `async as => ...`. This edge case should be parsed correctly by esbuild starting with this release. - Transform BigInt values into constructor calls when unsupported ([#​4049](https://redirect.github.com/evanw/esbuild/issues/4049)) Previously esbuild would refuse to compile the BigInt literals (such as `123n`) if they are unsupported in the configured target environment (such as with `--target=es6`). The rationale was that they cannot be polyfilled effectively because they change the behavior of JavaScript's arithmetic operators and JavaScript doesn't have operator overloading. However, this prevents using esbuild with certain libraries that would otherwise work if BigInt literals were ignored, such as with old versions of the [`buffer` library](https://redirect.github.com/feross/buffer) before the library fixed support for running in environments without BigInt support. So with this release, esbuild will now turn BigInt literals into BigInt constructor calls (so `123n` becomes `BigInt(123)`) and generate a warning in this case. You can turn off the warning with `--log-override:bigint=silent` or restore the warning to an error with `--log-override:bigint=error` if needed. - Change how `console` API dropping works ([#​4020](https://redirect.github.com/evanw/esbuild/issues/4020)) Previously the `--drop:console` feature replaced all method calls off of the `console` global with `undefined` regardless of how long the property access chain was (so it applied to `console.log()` and `console.log.call(console)` and `console.log.not.a.method()`). However, it was pointed out that this breaks uses of `console.log.bind(console)`. That's also incompatible with Terser's implementation of the feature, which is where this feature originally came from (it does support `bind`). So with this release, using this feature with esbuild will now only replace one level of method call (unless extended by `call` or `apply`) and will replace the method being called with an empty function in complex cases: ```js // Original code const x = console.log('x') const y = console.log.call(console, 'y') const z = console.log.bind(console)('z') // Old output (with --drop-console) const x = void 0; const y = void 0; const z = (void 0)("z"); // New output (with --drop-console) const x = void 0; const y = void 0; const z = (() => { }).bind(console)("z"); ``` This should more closely match Terser's existing behavior. - Allow BigInt literals as `define` values With this release, you can now use BigInt literals as define values, such as with `--define:FOO=123n`. Previously trying to do this resulted in a syntax error. - Fix a bug with resolve extensions in `node_modules` ([#​4053](https://redirect.github.com/evanw/esbuild/issues/4053)) The `--resolve-extensions=` option lets you specify the order in which to try resolving implicit file extensions. For complicated reasons, esbuild reorders TypeScript file extensions after JavaScript ones inside of `node_modules` so that JavaScript source code is always preferred to TypeScript source code inside of dependencies. However, this reordering had a bug that could accidentally change the relative order of TypeScript file extensions if one of them was a prefix of the other. That bug has been fixed in this release. You can see the issue for details. - Better minification of statically-determined `switch` cases ([#​4028](https://redirect.github.com/evanw/esbuild/issues/4028)) With this release, esbuild will now try to trim unused code within `switch` statements when the test expression and `case` expressions are primitive literals. This can arise when the test expression is an identifier that is substituted for a primitive literal at compile time. For example: ```js // Original code switch (MODE) { case 'dev': installDevToolsConsole() break case 'prod': return default: throw new Error } // Old output (with --minify '--define:MODE="prod"') switch("prod"){case"dev":installDevToolsConsole();break;case"prod":return;default:throw new Error} // New output (with --minify '--define:MODE="prod"') return; ``` - Emit `/* @​__KEY__ */` for string literals derived from property names ([#​4034](https://redirect.github.com/evanw/esbuild/issues/4034)) Property name mangling is an advanced feature that shortens certain property names for better minification (I say "advanced feature" because it's very easy to break your code with it). Sometimes you need to store a property name in a string, such as `obj.get('foo')` instead of `obj.foo`. JavaScript minifiers such as esbuild and [Terser](https://terser.org/) have a convention where a `/* @​__KEY__ */` comment before the string makes it behave like a property name. So `obj.get(/* @​__KEY__ */ 'foo')` allows the contents of the string `'foo'` to be shortened. However, esbuild sometimes itself generates string literals containing property names when transforming code, such as when lowering class fields to ES6 or when transforming TypeScript decorators. Previously esbuild didn't generate its own `/* @​__KEY__ */` comments in this case, which means that minifying your code by running esbuild again on its own output wouldn't work correctly (this does not affect people that both minify and transform their code in a single step). With this release, esbuild will now generate `/* @​__KEY__ */` comments for property names in generated string literals. To avoid lots of unnecessary output for people that don't use this advanced feature, the generated comments will only be present when the feature is active. If you want to generate the comments but not actually mangle any property names, you can use a flag that has no effect such as `--reserve-props=.`, which tells esbuild to not mangle any property names (but still activates this feature). - The `text` loader now strips the UTF-8 BOM if present ([#​3935](https://redirect.github.com/evanw/esbuild/issues/3935)) Some software (such as Notepad on Windows) can create text files that start with the three bytes `0xEF 0xBB 0xBF`, which is referred to as the "byte order mark". This prefix is intended to be removed before using the text. Previously esbuild's `text` loader included this byte sequence in the string, which turns into a prefix of `\uFEFF` in a JavaScript string when decoded from UTF-8. With this release, esbuild's `text` loader will now remove these bytes when they occur at the start of the file. - Omit legal comment output files when empty ([#​3670](https://redirect.github.com/evanw/esbuild/issues/3670)) Previously configuring esbuild with `--legal-comment=external` or `--legal-comment=linked` would always generate a `.LEGAL.txt` output file even if it was empty. Starting with this release, esbuild will now only do this if the file will be non-empty. This should result in a more organized output directory in some cases. - Update Go from 1.23.1 to 1.23.5 ([#​4056](https://redirect.github.com/evanw/esbuild/issues/4056), [#​4057](https://redirect.github.com/evanw/esbuild/pull/4057)) This should have no effect on existing code as this version change does not change Go's operating system support. It may remove certain reports from vulnerability scanners that detect which version of the Go compiler esbuild uses. This PR was contributed by [@​MikeWillCook](https://redirect.github.com/MikeWillCook). - Allow passing a port of 0 to the development server ([#​3692](https://redirect.github.com/evanw/esbuild/issues/3692)) Unix sockets interpret a port of 0 to mean "pick a random unused port in the [ephemeral port](https://en.wikipedia.org/wiki/Ephemeral_port) range". However, esbuild's default behavior when the port is not specified is to pick the first unused port starting from 8000 and upward. This is more convenient because port 8000 is typically free, so you can for example restart the development server and reload your app in the browser without needing to change the port in the URL. Since esbuild is written in Go (which does not have optional fields like JavaScript), not specifying the port in Go means it defaults to 0, so previously passing a port of 0 to esbuild caused port 8000 to be picked. Starting with this release, passing a port of 0 to esbuild when using the CLI or the JS API will now pass port 0 to the OS, which will pick a random ephemeral port. To make this possible, the `Port` option in the Go API has been changed from `uint16` to `int` (to allow for additional sentinel values) and passing a port of -1 in Go now picks a random port. Both the CLI and JS APIs now remap an explicitly-provided port of 0 into -1 for the internal Go API. Another option would have been to change `Port` in Go from `uint16` to `*uint16` (Go's closest equivalent of `number | undefined`). However, that would make the common case of providing an explicit port in Go very awkward as Go doesn't support taking the address of integer constants. This tradeoff isn't worth it as picking a random ephemeral port is a rare use case. So the CLI and JS APIs should now match standard Unix behavior when the port is 0, but you need to use -1 instead with Go API. - Minification now avoids inlining constants with direct `eval` ([#​4055](https://redirect.github.com/evanw/esbuild/issues/4055)) Direct `eval` can be used to introduce a new variable like this: ```js const variable = false ;(function () { eval("var variable = true") console.log(variable) })() ``` Previously esbuild inlined `variable` here (which became `false`), which changed the behavior of the code. This inlining is now avoided, but please keep in mind that direct `eval` breaks many assumptions that JavaScript tools hold about normal code (especially when bundling) and I do not recommend using it. There are usually better alternatives that have a more localized impact on your code. You can read more about this here: https://esbuild.github.io/link/direct-eval/ </details> --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
) <!-- Please use this template for your pull request. --> <!-- Please use the sections that you need and delete other sections --> Adds docs for setting evaluation context in angular Signed-off-by: Lukas Reining <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
🤖 I have created a release *beep* *boop* --- ## [0.0.12](angular-sdk-v0.0.11...angular-sdk-v0.0.12) (2025-04-11) ### ✨ New Features * **angular:** add docs for setting evaluation context in angular ([#1170](#1170)) ([24f1b23](24f1b23)) ### Dependencies * The following workspace dependencies were updated * devDependencies * @openfeature/web-sdk bumped from * to 1.5.0 --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Signed-off-by: OpenFeature Bot <[email protected]> Signed-off-by: Lukas Reining <[email protected]> Co-authored-by: Lukas Reining <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
🤖 I have created a release *beep* *boop* --- ## [0.2.3](nestjs-sdk-v0.2.2...nestjs-sdk-v0.2.3) (2025-04-11) ### 🧹 Chore * update sdk peer ([#1142](#1142)) ([8bb6206](8bb6206)) ### Dependencies * The following workspace dependencies were updated * devDependencies * @openfeature/server-sdk bumped from * to 1.18.0 --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Signed-off-by: OpenFeature Bot <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
🤖 I have created a release *beep* *boop* --- ## [1.18.0](server-sdk-v1.17.1...server-sdk-v1.18.0) (2025-04-11) ### ✨ New Features * add a top-level method for accessing providers ([#1152](#1152)) ([ae8fce8](ae8fce8)) * add support for abort controllers to event handlers ([#1151](#1151)) ([6a22483](6a22483)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Signed-off-by: OpenFeature Bot <[email protected]> Co-authored-by: Lukas Reining <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
🤖 I have created a release *beep* *boop* --- ## [1.5.0](web-sdk-v1.4.1...web-sdk-v1.5.0) (2025-04-11) ### ✨ New Features * add a top-level method for accessing providers ([#1152](#1152)) ([ae8fce8](ae8fce8)) * add support for abort controllers to event handlers ([#1151](#1151)) ([6a22483](6a22483)) ### 🐛 Bug Fixes * Typo in name of the function ([2c5b37c](2c5b37c)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Signed-off-by: OpenFeature Bot <[email protected]> Signed-off-by: Todd Baert <[email protected]> Co-authored-by: Lukas Reining <[email protected]> Co-authored-by: Todd Baert <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
🤖 I have created a release *beep* *boop* --- ## [0.0.14](angular-sdk-v0.0.13...angular-sdk-v0.0.14) (2025-05-25) ### 🐛 Bug Fixes * **angular:** add license and url field to package.json ([b2784f5](b2784f5)) ### Dependencies * The following workspace dependencies were updated * devDependencies * @openfeature/web-sdk bumped from * to 1.5.1 --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Signed-off-by: OpenFeature Bot <[email protected]> Signed-off-by: Lukas Reining <[email protected]> Co-authored-by: Lukas Reining <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [rxjs](https://rxjs.dev) ([source](https://redirect.github.com/reactivex/rxjs)) | [`7.8.1` -> `7.8.2`](https://renovatebot.com/diffs/npm/rxjs/7.8.1/7.8.2) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>reactivex/rxjs (rxjs)</summary> ### [`v7.8.2`](https://redirect.github.com/reactivex/rxjs/compare/7.8.1...7.8.2) [Compare Source](https://redirect.github.com/reactivex/rxjs/compare/7.8.1...7.8.2) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xMS4xOCIsInVwZGF0ZWRJblZlciI6IjQwLjExLjE4IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [jest-preset-angular](https://thymikee.github.io/jest-preset-angular) ([source](https://redirect.github.com/thymikee/jest-preset-angular)) | [`14.5.1` -> `14.5.5`](https://renovatebot.com/diffs/npm/jest-preset-angular/14.5.1/14.5.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>thymikee/jest-preset-angular (jest-preset-angular)</summary> ### [`v14.5.5`](https://redirect.github.com/thymikee/jest-preset-angular/blob/HEAD/CHANGELOG.md#1455-2025-04-15) [Compare Source](https://redirect.github.com/thymikee/jest-preset-angular/compare/v14.5.4...v14.5.5) ##### Bug Fixes - fix: allow name exports for `presets` subpath ([9100baf](https://redirect.github.com/thymikee/jest-preset-angular/commit/9100baf)) ### [`v14.5.4`](https://redirect.github.com/thymikee/jest-preset-angular/blob/HEAD/CHANGELOG.md#1454-2025-03-31) [Compare Source](https://redirect.github.com/thymikee/jest-preset-angular/compare/v14.5.3...v14.5.4) ##### Bug Fixes - fix: warn when using both `isolatedModules` and `emitDecoratorMetadata` ([#​3029](https://redirect.github.com/thymikee/jest-preset-angular/issues/3029)) ([51db8f4](https://redirect.github.com/thymikee/jest-preset-angular/commit/51db8f4)), closes [#​3029](https://redirect.github.com/thymikee/jest-preset-angular/issues/3029) - update dependency ts-jest to v29.3.0 ([1d8415d](https://redirect.github.com/thymikee/jest-preset-angular/commit/1d8415d)) ### [`v14.5.3`](https://redirect.github.com/thymikee/jest-preset-angular/blob/HEAD/CHANGELOG.md#1453-2025-02-24) [Compare Source](https://redirect.github.com/thymikee/jest-preset-angular/compare/v14.5.2...v14.5.3) ##### Bug Fixes - build: update bundle `jit_transform.js`, closes [#​2979](https://redirect.github.com/thymikee/jest-preset-angular/issues/2979) ### [`v14.5.2`](https://redirect.github.com/thymikee/jest-preset-angular/blob/HEAD/CHANGELOG.md#1452-2025-02-21) [Compare Source](https://redirect.github.com/thymikee/jest-preset-angular/compare/v14.5.1...v14.5.2) ##### Bug Fixes - fix: transform `js` ESM file from `node_modules` ([b2b3934](https://redirect.github.com/thymikee/jest-preset-angular/commit/b2b3934)), closes [#​2913](https://redirect.github.com/thymikee/jest-preset-angular/issues/2913) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xMS4xOCIsInVwZGF0ZWRJblZlciI6IjQwLjExLjE4IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
Signed-off-by: Lukas Reining <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
🤖 I have created a release *beep* *boop* --- ## [0.0.15](angular-sdk-v0.0.14...angular-sdk-v0.0.15) (2025-05-27) ### 🐛 Bug Fixes * **angular:** update docs ([#1200](#1200)) ([b6ea588](b6ea588)) ### Dependencies * The following workspace dependencies were updated * devDependencies * @openfeature/web-sdk bumped from * to 1.5.1 --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Signed-off-by: OpenFeature Bot <[email protected]> Signed-off-by: Lukas Reining <[email protected]> Co-authored-by: Lukas Reining <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
Adds the environment for NPM publish step of the pipeline to the correct job. Signed-off-by: Lukas Reining <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
🤖 I have created a release *beep* *boop* --- ## [0.2.5](nestjs-sdk-v0.2.4...nestjs-sdk-v0.2.5) (2025-05-27) ### ✨ New Features * adds RequireFlagsEnabled decorator ([#1159](#1159)) ([59b8fe9](59b8fe9)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Signed-off-by: OpenFeature Bot <[email protected]> Signed-off-by: Lukas Reining <[email protected]> Co-authored-by: Lukas Reining <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
node v18 is now EOL Signed-off-by: Todd Baert <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [prettier](https://prettier.io) ([source](https://redirect.github.com/prettier/prettier)) | [`3.4.2` -> `3.5.3`](https://renovatebot.com/diffs/npm/prettier/3.4.2/3.5.3) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>prettier/prettier (prettier)</summary> ### [`v3.5.3`](https://redirect.github.com/prettier/prettier/compare/3.5.2...b51ba9d46765bcfab714ebca982bd04ad25ae562) [Compare Source](https://redirect.github.com/prettier/prettier/compare/3.5.2...3.5.3) ### [`v3.5.2`](https://redirect.github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#352) [Compare Source](https://redirect.github.com/prettier/prettier/compare/3.5.1...3.5.2) [diff](https://redirect.github.com/prettier/prettier/compare/3.5.1...3.5.2) ##### Remove `module-sync` condition ([#​17156](https://redirect.github.com/prettier/prettier/pull/17156) by [@​fisker](https://redirect.github.com/fisker)) In Prettier 3.5.0, [we added `module-sync` condition to `package.json`](https://prettier.io/blog/2025/02/09/3.5.0#use-esm-entrypoint-for-requireesm-16958-by-tats-u), so that `require("prettier")` can use ESM version, but turns out it doesn't work if CommonJS and ESM plugins both imports builtin plugins. To solve this problem, we decide simply remove the `module-sync` condition, so `require("prettier")` will still use the CommonJS version, we'll revisit until `require(ESM)` feature is more stable. ### [`v3.5.1`](https://redirect.github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#351) [Compare Source](https://redirect.github.com/prettier/prettier/compare/3.5.0...3.5.1) [diff](https://redirect.github.com/prettier/prettier/compare/3.5.0...3.5.1) ##### Fix CLI crash when cache for old version exists ([#​17100](https://redirect.github.com/prettier/prettier/pull/17100) by [@​sosukesuzuki](https://redirect.github.com/sosukesuzuki)) Prettier 3.5 uses a different cache format than previous versions, Prettier 3.5.0 crashes when reading existing cache file, Prettier 3.5.1 fixed the problem. ##### Support dockercompose and github-actions-workflow in VSCode ([#​17101](https://redirect.github.com/prettier/prettier/pull/17101) by [@​remcohaszing](https://redirect.github.com/remcohaszing)) Prettier now supports the `dockercompose` and `github-actions-workflow` languages in Visual Studio Code. ### [`v3.5.0`](https://redirect.github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#350) [Compare Source](https://redirect.github.com/prettier/prettier/compare/3.4.2...3.5.0) [diff](https://redirect.github.com/prettier/prettier/compare/3.4.2...3.5.0) 🔗 [Release Notes](https://prettier.io/blog/2025/02/09/3.5.0.html) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xMS4xOCIsInVwZGF0ZWRJblZlciI6IjQwLjExLjE4IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`22.15.17` -> `22.15.23`](https://renovatebot.com/diffs/npm/@types%2fnode/22.15.17/22.15.23) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xNi4wIiwidXBkYXRlZEluVmVyIjoiNDAuMzMuNiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
…aluation data (#1189) ## This PR - update the evaluation event to match the latest OTel semcon ### Related Issues Fixes #1188 ### Notes Update the createEvaluationEvent to match the latest OpenTelemetry spec. Unforutnately, this is a breaking change. I'll denote this in the release notes but not in the library version. That's because we're following the experimental OTel spec and the method itself is currently undocumented except from the generated JS Doc. It's also worth noting that OTel JS SDK event API doesn't currently support object as attribute values. @dyladan will update the OTel SDK. ### Follow-up Tasks Update the ToggleShop. ### How to test `npm run test` Signed-off-by: Michael Beemer <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [esbuild](https://redirect.github.com/evanw/esbuild) | [`0.25.4` -> `0.25.5`](https://renovatebot.com/diffs/npm/esbuild/0.25.4/0.25.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>evanw/esbuild (esbuild)</summary> ### [`v0.25.5`](https://redirect.github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0255) [Compare Source](https://redirect.github.com/evanw/esbuild/compare/v0.25.4...v0.25.5) - Fix a regression with `browser` in `package.json` ([#​4187](https://redirect.github.com/evanw/esbuild/issues/4187)) The fix to [#​4144](https://redirect.github.com/evanw/esbuild/issues/4144) in version 0.25.3 introduced a regression that caused `browser` overrides specified in `package.json` to fail to override relative path names that end in a trailing slash. That behavior change affected the `[email protected]` package. This regression has been fixed, and now has test coverage. - Add support for certain keywords as TypeScript tuple labels ([#​4192](https://redirect.github.com/evanw/esbuild/issues/4192)) Previously esbuild could incorrectly fail to parse certain keywords as TypeScript tuple labels that are parsed by the official TypeScript compiler if they were followed by a `?` modifier. These labels included `function`, `import`, `infer`, `new`, `readonly`, and `typeof`. With this release, these keywords will now be parsed correctly. Here's an example of some affected code: ```ts type Foo = [ value: any, readonly?: boolean, // This is now parsed correctly ] ``` - Add CSS prefixes for the `stretch` sizing value ([#​4184](https://redirect.github.com/evanw/esbuild/issues/4184)) This release adds support for prefixing CSS declarations such as `div { width: stretch }`. That CSS is now transformed into this depending on what the `--target=` setting includes: ```css div { width: -webkit-fill-available; width: -moz-available; width: stretch; } ``` </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4zMy42IiwidXBkYXRlZEluVmVyIjoiNDAuMzMuNiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [rollup](https://rollupjs.org/) ([source](https://redirect.github.com/rollup/rollup)) | [`4.40.2` -> `4.41.1`](https://renovatebot.com/diffs/npm/rollup/4.40.2/4.41.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>rollup/rollup (rollup)</summary> ### [`v4.41.1`](https://redirect.github.com/rollup/rollup/blob/HEAD/CHANGELOG.md#4411) [Compare Source](https://redirect.github.com/rollup/rollup/compare/v4.41.0...v4.41.1) *2025-05-24* ##### Bug Fixes - If a plugin calls `this.resolve` with `skipSelf: true`, subsequent calls when handling this by the same plugin with same parameters will return `null` to avoid infinite recursions ([#​5945](https://redirect.github.com/rollup/rollup/issues/5945)) ##### Pull Requests - [#​5945](https://redirect.github.com/rollup/rollup/pull/5945): Avoid recursively calling a plugin's resolveId hook with same id and importer ([@​younggglcy](https://redirect.github.com/younggglcy), [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​5963](https://redirect.github.com/rollup/rollup/pull/5963): fix(deps): update swc monorepo (major) ([@​renovate](https://redirect.github.com/renovate)\[bot]) - [#​5964](https://redirect.github.com/rollup/rollup/pull/5964): fix(deps): lock file maintenance minor/patch updates ([@​renovate](https://redirect.github.com/renovate)\[bot]) ### [`v4.41.0`](https://redirect.github.com/rollup/rollup/blob/HEAD/CHANGELOG.md#4410) [Compare Source](https://redirect.github.com/rollup/rollup/compare/v4.40.2...v4.41.0) *2025-05-18* ##### Features - Detect named exports in more dynamic import scenarios ([#​5954](https://redirect.github.com/rollup/rollup/issues/5954)) ##### Pull Requests - [#​5949](https://redirect.github.com/rollup/rollup/pull/5949): ci: use node 24 ([@​btea](https://redirect.github.com/btea), [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​5951](https://redirect.github.com/rollup/rollup/pull/5951): chore(deps): update dependency pretty-bytes to v7 ([@​renovate](https://redirect.github.com/renovate)\[bot]) - [#​5952](https://redirect.github.com/rollup/rollup/pull/5952): fix(deps): update swc monorepo (major) ([@​renovate](https://redirect.github.com/renovate)\[bot], [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​5953](https://redirect.github.com/rollup/rollup/pull/5953): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://redirect.github.com/renovate)\[bot]) - [#​5954](https://redirect.github.com/rollup/rollup/pull/5954): enhance tree-shaking for dynamic imports ([@​TrickyPi](https://redirect.github.com/TrickyPi), [@​renovate](https://redirect.github.com/renovate)\[bot], [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​5957](https://redirect.github.com/rollup/rollup/pull/5957): chore(deps): update dependency lint-staged to v16 ([@​renovate](https://redirect.github.com/renovate)\[bot], [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​5958](https://redirect.github.com/rollup/rollup/pull/5958): fix(deps): update rust crate swc_compiler_base to v20 ([@​renovate](https://redirect.github.com/renovate)\[bot], [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​5959](https://redirect.github.com/rollup/rollup/pull/5959): fix(deps): lock file maintenance minor/patch updates ([@​renovate](https://redirect.github.com/renovate)\[bot], [@​lukastaegert](https://redirect.github.com/lukastaegert)) - [#​5960](https://redirect.github.com/rollup/rollup/pull/5960): Use spawn to run CLI tests ([@​lukastaegert](https://redirect.github.com/lukastaegert)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4zMy42IiwidXBkYXRlZEluVmVyIjoiNDAuMzMuNiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [eslint-plugin-jsdoc](https://redirect.github.com/gajus/eslint-plugin-jsdoc) | [`50.6.14` -> `50.7.0`](https://renovatebot.com/diffs/npm/eslint-plugin-jsdoc/50.6.14/50.7.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>gajus/eslint-plugin-jsdoc (eslint-plugin-jsdoc)</summary> ### [`v50.7.0`](https://redirect.github.com/gajus/eslint-plugin-jsdoc/releases/tag/v50.7.0) [Compare Source](https://redirect.github.com/gajus/eslint-plugin-jsdoc/compare/v50.6.17...v50.7.0) ##### Features - **`getJsdocProcessorPlugin`:** add `allowedLanguagesToProcess` option ([#​1392](https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1392)) ([0adbf43](https://redirect.github.com/gajus/eslint-plugin-jsdoc/commit/0adbf43b6b9f3e24422e100571ed66dd04f169be)) ### [`v50.6.17`](https://redirect.github.com/gajus/eslint-plugin-jsdoc/releases/tag/v50.6.17) [Compare Source](https://redirect.github.com/gajus/eslint-plugin-jsdoc/compare/v50.6.16...v50.6.17) ##### Bug Fixes - **`require-param`:** update jsdoccomment to support exported TSFunctionType type; fixes [#​1386](https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1386) ([#​1389](https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1389)) ([e26a11a](https://redirect.github.com/gajus/eslint-plugin-jsdoc/commit/e26a11a39930ebd07f61e509d91e6cb87f017dde)) ### [`v50.6.16`](https://redirect.github.com/gajus/eslint-plugin-jsdoc/releases/tag/v50.6.16) [Compare Source](https://redirect.github.com/gajus/eslint-plugin-jsdoc/compare/v50.6.15...v50.6.16) ##### Bug Fixes - **`valid-types`:** fix parsing of expressions like `[@returns](https://redirect.github.com/returns) {[@​link](https://redirect.github.com/link) SomeType}`; fixes [#​1381](https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1381) ([#​1382](https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1382)) ([2bd7242](https://redirect.github.com/gajus/eslint-plugin-jsdoc/commit/2bd72429015352b383f5bfc22a937afaac4a3b48)) ### [`v50.6.15`](https://redirect.github.com/gajus/eslint-plugin-jsdoc/releases/tag/v50.6.15) [Compare Source](https://redirect.github.com/gajus/eslint-plugin-jsdoc/compare/v50.6.14...v50.6.15) ##### Bug Fixes - **`no-undefined-types`:** avoid eslint 8 error; fixes [#​1387](https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1387) ([#​1388](https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1388)) ([1bef636](https://redirect.github.com/gajus/eslint-plugin-jsdoc/commit/1bef63677e385234a01316b6cfa9377023c10c15)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xNi4wIiwidXBkYXRlZEluVmVyIjoiNDAuMzMuNiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [rollup-plugin-dts](https://redirect.github.com/Swatinem/rollup-plugin-dts) | [`6.1.1` -> `6.2.1`](https://renovatebot.com/diffs/npm/rollup-plugin-dts/6.1.1/6.2.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>Swatinem/rollup-plugin-dts (rollup-plugin-dts)</summary> ### [`v6.2.1`](https://redirect.github.com/Swatinem/rollup-plugin-dts/compare/v6.2.0...v6.2.1) [Compare Source](https://redirect.github.com/Swatinem/rollup-plugin-dts/compare/v6.2.0...v6.2.1) ### [`v6.2.0`](https://redirect.github.com/Swatinem/rollup-plugin-dts/blob/HEAD/CHANGELOG.md#620) [Compare Source](https://redirect.github.com/Swatinem/rollup-plugin-dts/compare/v6.1.1...v6.2.0) **Features**: - Support importing json modules - Return Source Map Differences to Rollup **Fixes**: - Unable to find the program when entry points exist intersection dependency - Create program for `imports` input file - Force emit types even when there's errors - Preserve type members of namespace in re-exported module - Imports and exports follows type-only - Import "local types" from "global modules" - Correctly restore type-only import/export names **Thank you**: Features, fixes and improvements in this release have been contributed by: - [@​NWYLZW](https://redirect.github.com/NWYLZW) - [@​castarco](https://redirect.github.com/castarco) - [@​hyrious](https://redirect.github.com/hyrious) - [@​andersk](https://redirect.github.com/andersk) - [@​kricsleo](https://redirect.github.com/kricsleo) - [@​alan-agius4](https://redirect.github.com/alan-agius4) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xMS4xOCIsInVwZGF0ZWRJblZlciI6IjQwLjExLjE4IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
I missed a few workflows when I updated the node version. We should update these for consistency. Signed-off-by: Todd Baert <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [eslint-plugin-jsdoc](https://redirect.github.com/gajus/eslint-plugin-jsdoc) | [`50.7.0` -> `50.7.1`](https://renovatebot.com/diffs/npm/eslint-plugin-jsdoc/50.7.0/50.7.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>gajus/eslint-plugin-jsdoc (eslint-plugin-jsdoc)</summary> ### [`v50.7.1`](https://redirect.github.com/gajus/eslint-plugin-jsdoc/releases/tag/v50.7.1) [Compare Source](https://redirect.github.com/gajus/eslint-plugin-jsdoc/compare/v50.7.0...v50.7.1) ##### Bug Fixes - revert are-docs-informative upgrade; fixes [#​1393](https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1393) ([#​1394](https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1394)) ([99cb131](https://redirect.github.com/gajus/eslint-plugin-jsdoc/commit/99cb131ee40fa10f943aadfd73a6d18da082882f)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/js-sdk). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC40MC4zIiwidXBkYXRlZEluVmVyIjoiNDAuNDAuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Weyert de Boer <[email protected]>
🤖 I have created a release *beep* *boop* --- ## [1.8.1](core-v1.8.0...core-v1.8.1) (2025-06-04) ### 🔄 Refactoring * **telemetry:** update telemetry attributes and remove unused evaluation data ([#1189](#1189)) ([3e6bcae](3e6bcae)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Signed-off-by: OpenFeature Bot <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
Signed-off-by: Michael Beemer <[email protected]> Signed-off-by: Weyert de Boer <[email protected]>
BREAKING CHANGE: Renamed `featureKey` prop to `flagKey` to avoid React key conflicts. Removed `negate` prop in favor of custom predicate functions. - Rename `featureKey` prop to `flagKey` to prevent conflicts with React's reserved key prop - Add optional `predicate` function prop for flexible custom matching logic - Remove `negate` prop (negation can be handled via predicate functions) - Improve type safety with generic types and FlagValue constraints - Add default `equals` predicate function for standard equality matching - Remove debug console.log statement - Support truthy evaluation when no match value is provided Signed-off-by: Weyert de Boer <[email protected]>
- Update tests to use new `flagKey` prop instead of `featureKey` - Add comprehensive test coverage for custom predicate function - Add tests for truthy/falsy flag evaluation without match values - Fix string match test to use actual flag value instead of variant - Improve type safety in test predicate functions Signed-off-by: Weyert de Boer <[email protected]>
Update package-lock.json after dependency installation Signed-off-by: Weyert de Boer <[email protected]>
340598d
to
17d0c95
Compare
a handy little git command which i like to use in this situations
it will reset the branch to upstream main, but will keep all the changes ready to be committed again. replace |
@aepfli Thanks, I will try it out tomorrow. I might message you lol |
Signed-off-by: Weyert de Boer <[email protected]>
…nent The fallback prop now accepts a function that receives EvaluationDetails<T> as an argument, providing more control over fallback rendering based on evaluation context. BREAKING CHANGE: None - maintains backward compatibility with static React nodes Signed-off-by: Weyert de Boer <[email protected]>
Your feedback should be addressed |
This PR
Introduces the FeatureFlag component for React that allow using feature flags in a declarative manner
Related Issues
No ticket
Notes
Maybe consider adding a similar component for other supported frameworks?
Follow-up Tasks
How to test
I have written unit tests to cover the main features of the component